﻿Imports BE.BE
Imports BL.BL
Imports DAL.DAL

Namespace BL

    Public Class Familia_BL

        Shared Function listarFamilias() As List(Of Familia_BE)
            Return DAL_Familia.listarFamilias
        End Function


        Shared Function listarFamiliasPorUsuario(ByVal pIdUsuario As Integer) As List(Of Familia_BE)
            Return DAL_Familia.listarFamiliasPorUsuario(pIdUsuario)
        End Function


        Shared Sub GrabarNuevaFamiliaConSusPatentes(ByVal pFamilia As Familia_BE)

            'grabamos la familia.
            pFamilia.Id = Helper_DAL.ObtenerProximoId("familia")
            DAL_Familia.nuevaFamilia(pFamilia)

            'calculamos el DVH (el id_familia + todas sus patentes (id_patente + tipo).
            Dim DVH As Integer = 0
            Dim DVV As Integer = 0
            'recorremos todas las patentes de esta familia.
            For Each pat As Patente_BE In pFamilia.Patentes
                Dim cadenastr As String = ""
                cadenastr += pFamilia.Id.ToString
                cadenastr += pat.Id.ToString
                DVH = Helper_BL.CalcularDVH(cadenastr)
                DAL_Familia.nuevaPatenteEnFamilia(pat.Id, pFamilia.Id, DVH)
                'actualizo dvv en la tabla familia_patente.
                DVV = Helper_BL.CalcularDVV("familia_patente")
                Helper_BL.setearDVV("familia_patente", DVV)
            Next

        End Sub

        Shared Sub GrabarModificacionesFamiliaConSusPatentes(ByVal pFamilia As Familia_BE)
            DAL_Familia.modificarFamilia(pFamilia)

            'trtamiento de patentes, borramos todas las anteriores y grabamos la lista actual de patentes asociadas.
            'nos aseguramos de no hacer duplicados.
            DAL_Familia.eliminarPatentesFamilia(pFamilia.Id)

            'asociamos las patentes disponibles actuales; tabla: familia_patentes
            Dim DVH As Integer = 0
            Dim DVV As Integer = 0
            'recorremos todas las patentes de esta familia.
            For Each pat As Patente_BE In pFamilia.Patentes
                Dim cadenastr As String = ""
                cadenastr += pFamilia.Id.ToString
                cadenastr += pat.Id.ToString
                DVH = Helper_BL.CalcularDVH(cadenastr)
                DAL_Familia.nuevaPatenteEnFamilia(pat.Id, pFamilia.Id, DVH)
                'actualizo dvv en la tabla familia_patente.
                DVV = Helper_BL.CalcularDVV("familia_patente")
                Helper_BL.setearDVV("familia_patente", DVV)
            Next
        End Sub


        Shared Sub eliminarFamilia(ByVal pIdFamilia As Integer)
            DAL_Familia.eliminarFamilia(pIdFamilia)
        End Sub


        Shared Sub eliminarPatentesFamilia(ByVal pIdFamilia As Integer)
            DAL_Familia.eliminarPatentesFamilia(pIdFamilia)
        End Sub


        Shared Sub GuardarFamiliaPorUsuario(ByVal pFamilia As Familia_BE, pId As Integer)
            Try
                DAL_Familia.guardarFamiliaPorUsuario(pFamilia, pId)
            Catch ex As Exception
                Throw ex
            End Try
        End Sub


        Shared Function listarPatentesDeLaFamilia(ByVal pId As Integer) As List(Of Patente_BE)
            Return DAL_Familia.listarPatentesDeLaFamilia(pId)
        End Function

    End Class

End Namespace